package com.qdlc.p2p.dal.dao;

import java.util.List;

import com.qdlc.p2p.dal.common.dao.BaseDao;
import com.qdlc.p2p.dal.common.model.jpa.PageDataList;
import com.qdlc.p2p.dal.dto.Experience;
import com.qdlc.p2p.dal.dto.User;
import com.qdlc.p2p.dal.model.ExperienceModel;

/**
 * 体验券信息DAO接口
 * @author xxx
 * @version 2.0
 * @since 2015年04月23日 10时46分28秒
 */
public interface ExperienceDao extends BaseDao<Experience> {

    /**
	 * 获取用户（可用的)体验券数量
	 * @param userId
	 */
	int countUsableExperience(long userId);
    
    /**
	 * 获取用户（可用的)体验券
	 * @param userId
	 */
	List<Experience> findUsableExperience(long userId);
	
	/**
	 * 禁用/启用
	 * @param id 
	 */
	int updateStatus(long id, byte status, byte preStatus);
	
	/**
	 * 获取体验金总额
	 * @param ids
	 * @param user_id
	 * @return
	 */
	double sumAmount(long[] ids, long user_id);
	
	/**
	 * 获取待收体验券本金和利息
	 * @param borrowId
	 * @param period
	 * @return
	 */
	Object[] getCapitalAndInterestByBorrowAndPeriod(long borrowId, int period);
	
	/**
	 * @Description: 体验券过期处理
	 * @param      
	 * @return
	 */
	void eperienceExpiredDispose();
	
	/**
	 * 检测用户体验券的使用状态
	 * 
	 * @param experienceIds
	 * @param user
	 * @return
	 */
	public boolean checkExperience(long[] experienceIds, User user);
	
	/**
	 * 根据状态查询对应 体验券
	 * @param status
	 * @return
	 */
	double getExperienceSumByStatus(int status,String date);

	/**
	 * 查询用户体验券列表
	 * @param model
	 * @return
     */
	PageDataList<ExperienceModel> findUserList(ExperienceModel model);

	/**
	 * 查询体验券列表
	 * @param model
	 * @return
     */
	PageDataList<ExperienceModel> findByModel(ExperienceModel model);
	
	/**
	 * 根据用户名模糊查询
	 * @param userName
	 * @return
	 */
	PageDataList<ExperienceModel> findByUserName(String userName, int currentPage, int pageSize);
	
}
